import Vue from 'vue'
import axios from 'axios'

import { Message } from 'element-ui'
import qs from 'qs'
import debug from 'debug'
import config from './settings'
Vue.use(axios)

var _apiURL = config.apiURL

/**
 * 封装axios的通用请求
 * @param  {string}   type      get\post\put\delete
 * @param  {string}   url       请求的接口URL
 * @param  {object}   data      传的参数，没有则传空对象
 * @param  {Function} fn        回调函数
 * @param  {string}   token     携带token参数
 */

var proxy = function (type, url, data, fn) {
  // 获取token
  console.log(_apiURL.get_token)
  var token = ''
  var dataToken = {
    url: _apiURL.get_token,
    method: type,
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    transformRequest: [function (data) {
      console.log('this is transformRequest')
      return qs.stringify(data)
    }],
    transformResponse: [function (data) {
      console.log(data)
      return data
    }],
    data: {
      username: data.username
    }
  }
  console.log(qs.stringify(dataToken.data))
  if (!window.localStorage.getItem('_t')) {
    axios(dataToken).then((res) => {
      console.log(typeof res)
      debug('api.axios.data', res)
      if (res.data.result === 0) {
        if (res.data.data) {
          token = res.data.data.slice(7)
          window.localStorage.setItem('_t', token)
        } else {
          Message({
            showClose: true,
            message: '返回错误：token为空',
            type: 'error'
          })
        }
      } else {
        Message({
          showClose: true,
          message: '返回错误：' + res.data.message,
          type: 'error'
        })
      }
    }).catch((err) => {
      console.log(333)
      Message({
        showClose: true,
        message: '返回错误：' + err.message,
        type: 'error'
      })
    })
  } else {
    token = window.localStorage.getItem('_t')
  }

  // // 获取sign
  // var dataGetsign = {
  //   method: type,
  //   url: _apiURL.get_sign,
  //   // headers: {
  //   //   'Content-Type': 'application/x-www-form-urlencoded',
  //   //   'X-Requested-With': 'XMLHttpRequest'
  //   // },
  //   data: data
  // }
  //
  // axios(dataGetsign).then((res) => {
  //   // debug('api.axios.data', res)
  //   if (res.status === 200) {
  //     if (res.data.token) {
  //
  //     }
  //     fn(res.data)
  //   } else {
  //     Message({
  //       showClose: true,
  //       message: '返回错误：' + res.message,
  //       type: 'error'
  //     })
  //   }
  // }).catch((err) => {
  //   Message({
  //     showClose: true,
  //     message: '返回错误：' + err.message,
  //     type: 'error'
  //   })
  // })
  //
  // // 获取数据
  // var datas = {}
  // if (type === 'get') {
  //   datas = {
  //     method: type,
  //     url: url,
  //     headers: { 'Authorization': ' Bearer ' + token },
  //     params: data
  //   }
  // } else {
  //   datas = {
  //     method: type,
  //     url: url,
  //     // headers: {
  //     //   'Content-Type': 'application/x-www-form-urlencoded',
  //     //   'X-Requested-With': 'XMLHttpRequest'
  //     // },
  //     data: data
  //   }
  // }
  //
  // axios(datas).then((res) => {
  //   // debug('api.axios.data', res)
  //   if (res.status === 200) {
  //     if (res.data.token) {
  //       window.localStorage.setItem('token', res.data.token)
  //     }
  //     fn(res.data)
  //   } else {
  //     Message({
  //       showClose: true,
  //       message: '返回错误：' + res.message,
  //       type: 'error'
  //     })
  //   }
  // }).catch((err) => {
  //   Message({
  //     showClose: true,
  //     message: '返回错误：' + err.message,
  //     type: 'error'
  //   })
  // })
}

module.exports = {
  line: {
    check (data, fn) {
      proxy.call(this, 'post', _apiURL.line_check, data, fn)
    },
    add (data, fn) {
      proxy.call(this, 'post', _apiURL.line_add, data, fn)
    },
    modify (data, fn) {
      proxy.call(this, 'post', _apiURL.line_modify, data, fn)
    },
    remove (data, fn) {
      proxy.call(this, 'post', _apiURL.line_remove, data, fn)
    },
    getSupermarket (data, fn) {
      proxy.call(this, 'post', _apiURL.line_supermarket, data, fn)
    },
    sequence (data, fn) {
      proxy.call(this, 'post', _apiURL.line_sequence, data, fn)
    },
    update (data, fn) {
      proxy.call(this, 'post', _apiURL.line_update, data, fn)
    },
    supermarketList (data, fn) {
      proxy.call(this, 'post', _apiURL.line_supermarketlist, data, fn)
    }
  },
  superMarket: {
    management (data, fn) {
      proxy.call(this, 'post', _apiURL.supermarket_management, data, fn)
    }
  },
  getInfo: {
    branch (data, fn) {
      proxy.call(this, 'post', _apiURL, data, fn)
    },
    dep (data, fn) {
      proxy.call(this, 'post', _apiURL, data, fn)
    },
    admin (data, fn) {
      proxy.call(this, 'post', _apiURL, data, fn)
    }
  }
}
